Computer graphics is a field that requires extensive amounts of computational power. Despite recent advances in graphics processing chips and systems, there is a continual demand for the capability to render complex artworks even faster than before.
Rendering systems use various different acceleration techniques to meet the processing demands imposed by users and applications. One such technique is the utilisation of multiple processor cores to perform tasks in parallel.
When using multiple processor cores, load balancing is an important factor for optimising performance. Time division, object division and screen division are some of the methods used for load balancing.
Time division or alternate frame rendering utilises multiple processor cores by rendering alternate frames in parallel. It is generally possible in animated graphics to generate the subsequent frame of a scene by re-rendering only the updated area of the last frame. However, when using the time division method, it is not possible to efficiently use the output of a frame as input to another frame. To achieve frame-to-frame coherence in the time division method, a processor must typically wait while another processor renders the current frame so that the output (i.e., the current frame) can be used as input to the next frame.
Object division rendering aims to balance the load by distributing graphical objects that make up a scene amongst processor cores at the object level. Each processor core then renders its allocated objects to create a partial frame output of the scene. However, the partial frame output of each processor core will only comprise a subset of the objects in the entire scene. The output from each of the processor cores is then merged to produce the final frame output. The load on each processor core depends on the geometry and other properties, such as fill information, of the allocated objects. In the object division method, disadvantageously, some of the processor cores could be overloaded due to processing complex objects while others of the processor cores finish their processing and wait idle until the next frame. Another drawback of the object division method is that each pixel in the final frame will be produced by merging partial frame outputs of each processor core. Merging each pixel is a costly task, particularly when processing high resolution scenes.
Screen division rendering works by partitioning the screen into tiles, bands or stripes, and delegating these regions to separate processor cores. Screen division rendering can be further categorised into dynamic and static partitioning methods. Dynamic partitioning analyses input artwork or feedback from the processor cores to determine the size of the regions. The region size can subsequently be adjusted for each frame such that the region is constant over the frame. Any changes to the size of the region will not take place until a new frame is partitioned. Static methods simply partition the screen at a predetermined position for all frames, regardless of the input or feedback. Both these screen division methods have disadvantages. Dynamic partitioning methods have the overhead of pre-processing the artwork or post-processing feedback. Static methods are ineffective when graphical objects are concentrated in a small area of the screen, such as a user interface of a device or an application running on a general purpose computer.
A need exists to substantially overcome, or at least ameliorate one or more disadvantages associated with existing rendering methods and systems that utilise multiple processor cores.